package web.socket;

import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Arrays;
import java.util.Scanner;

/**
 * @author keyer
 * @Description : 描述
 * Created by cyd on 2021-04-26 17:26:28
 */
public class TestSocket {

    @Test
    public void test01() throws UnknownHostException {

        /*
            InetAddress： 用于标识网络上的硬件资源
            URL： 统一资源定位符，通过URL可以直接读取或者写入网络上的数据
            Socket和ServerSocket： 使用TCP协议实现网络通信的Socket相关的类
            Datagram： 使用UDP协议，将数据保存在数据报中，通过网络进行通信
         */

        //获取本机InetAddress的实例：
        InetAddress address = InetAddress.getLocalHost();
        System.out.println("本机名：" + address.getHostName());
        System.out.println("IP地址：" + address.getHostAddress());
        byte[] bytes = address.getAddress();
        System.out.println("字节数组形式的IP地址：" + Arrays.toString(bytes));
        System.out.println("直接输出InetAddress对象：" + address);
    }

    /**
     * 学习socket
     * Step 1：创建ServerSocket对象，绑定监听的端口
     * Step 2：调用accept()方法监听客户端的请求
     * Step 3：连接建立后，通过输入流读取客户端发送的请求信息
     * Step 4：通过输出流向客户端发送响应信息
     * Step 5：关闭相关资源
     */
    @Test
    public void test02() {

    }

    public static void main(String[] args) throws IOException {
        Socket socket = new Socket("127.0.0.1", 8080);
        InputStream inputStream = socket.getInputStream();
        Scanner scanner = new Scanner(inputStream);
        while (scanner.hasNextLine()) {
            String s = scanner.nextLine();
            System.out.println(s);
        }
        scanner.close();
        inputStream.close();
        socket.close();
    }
}
